package com.etone.smartAudit.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.etone.smartAudit.domain.Item;
import com.etone.smartAudit.domain.Task;
import com.etone.smartAudit.vo.item.*;
import com.etone.smartAudit.vo.serverPath.ServerPathVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @author: 蒋学伟
 * @create: 2020-07-16 10:50:56
 * @Description 项目管理
 */
@Mapper
public interface ItemMapper extends BaseMapper<Item> {

    /**
     * 查找项目列表
     *
     * @param adminId
     * @param keys
     * @param startCreateTime
     * @param endCreateTime
     * @return
     */
    List<ItemListVO> findItemVOList(@Param("adminId") Integer adminId, @Param("keys") String keys, @Param("startCreateTime") Date startCreateTime, @Param("endCreateTime") Date endCreateTime);

    /**
     * 查找项目资源的使用情况
     *
     * @param itemIds
     * @return
     */
    List<ItemSourceUsedVO> findItemUsedSpace(@Param("itemIds") List<Integer> itemIds);

    /**
     * 查找基本信息
     *
     * @param adminId
     * @param keys
     * @param expectOverTimeStartTime
     * @param expectOverTimeEndTime
     * @return
     */
    List<ItemSimpleListVO> listItemVOSimpleList(@Param("adminId") Integer adminId, @Param("keys") String keys, @Param("expectOverTimeStartTime") Date expectOverTimeStartTime, @Param("expectOverTimeEndTime") Date expectOverTimeEndTime);

    /**
     * 查询名称是否存在
     *
     * @param id
     * @param name
     * @return
     */
    Boolean hasItemName(@Param("id") Integer id, @Param("name") String name);

    /**
     * 查看项目名称缩写是否存在
     *
     * @param id
     * @param nameAbbreviation
     * @return
     */
    Boolean hasNameAbbreviation(@Param("id") Integer id, @Param("nameAbbreviation") String nameAbbreviation);

    /**
     * 统计项目资源项目个数
     *
     * @return
     */
    List<ItemSourceUsedTotal> analysisSourceItemCount();

    /**
     * 通过项目资源查询正在使用的项目列表
     *
     * @param itemSourceId
     * @return
     */
    List<String> findItemNameBySource(@Param("itemSourceId") Integer itemSourceId);

    /**
     * 查询专项审计数量
     *
     * @return
     */
    Integer analysisSpecialCnt();

    /**
     * 查询持续审计数量
     *
     * @return
     */
    Integer analysisRiskCnt();

    /**
     * 查询非专项审计数量
     *
     * @return
     */
    Integer analysisNotSpecialCnt();


    /**
     * 关联任务
     *
     * @return
     */
    List<Task> resourceRelations();

    /**
     * 项目硬件信息列表
     *
     * @param id
     * @return
     */
    List<ServerPathVO> findListItemHardware(@Param("id") Integer id);

    /**
     * 项目软件资源
     *
     * @param id
     * @return
     */
    List<ItemSoftwareVO> listItemSoftware(@Param("id") Integer id);

    /**
     * 获取用户关联的项目
     * @param adminId
     * @return
     */
    List<Item> getItemsByUserId(@Param("adminId") Integer adminId);
}
